import Scanner from './Scanner';
import nestTokens from './nestTokens'

export default function parseTemplate (str) {
  let tokens = [];

  // 开始扫描
  const scanner = new Scanner(str);

  while (!scanner.eos()) {
    tokens.push(['text', scanner.scanUntil('{{').trim()]);
    scanner.scan('{{');
    // 注意，如果没有{{，此时已经走到头，再执行会返回空字符串，所以加个判断
    if (!scanner.eos()) {
      let cur = scanner.scanUntil('}}').trim(); // 去空格，有人为了美观会在大胡子里用空格
      if (cur[0] == '#') {
        tokens.push(['#', cur.substring(1)]);
      } else if (cur[0] == '/') {
        tokens.push(['/', cur.substring(1)]);
      } else {
        tokens.push(['name', cur]);
      }
      scanner.scan('}}');
    }
  }

  return nestTokens(tokens);
  // return tokens;
}
